home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SATAN11.ZIP / SRC / PORT_SCA / RING.C < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-04  |  1.0 KB  |  53 lines

  1.  /*
  2.   * ring_init(), ring_append(), ring_prepend(), ring_detach(), ring_succ(),
  3.   * ring_pred() - circular list management utilities.
  4.   * 
  5.   * Author: Wietse Venema.
  6.   */
  7.  
  8. #include "lib.h"
  9.  
  10. /* ring_init - initialize ring head */
  11.  
  12. void    ring_init(ring)
  13. RING   *ring;
  14. {
  15.     ring->pred = ring->succ = ring;
  16. }
  17.  
  18. /* ring_append - insert entry after ring head */
  19.  
  20. void    ring_append(ring, entry)
  21. RING   *ring;
  22. RING   *entry;
  23. {
  24.     entry->succ = ring->succ;
  25.     entry->pred = ring;
  26.     ring->succ->pred = entry;
  27.     ring->succ = entry;
  28. }
  29.  
  30. /* ring_prepend - insert new entry before ring head */
  31.  
  32. void    ring_prepend(ring, entry)
  33. RING   *ring;
  34. RING   *entry;
  35. {
  36.     entry->pred = ring->pred;
  37.     entry->succ = ring;
  38.     ring->pred->succ = entry;
  39.     ring->pred = entry;
  40. }
  41.  
  42. /* ring_detach - remove entry from ring */
  43.  
  44. void    ring_detach(entry)
  45. RING   *entry;
  46. {
  47.     register RING *succ = entry->succ;
  48.     register RING *pred = entry->pred;
  49.  
  50.     pred->succ = succ;
  51.     succ->pred = pred;
  52. }
  53.